/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.isfd.service;

import com.comac.ins.common.mybatis.core.page.TableDataInfo;
import com.comac.ins.isfd.domain.bo.IsfdDatabaseTypeManagementBo;
import com.comac.ins.isfd.domain.bo.query.IsfdDatabaseTypeManagementQueryBo;
import com.comac.ins.isfd.domain.vo.IsfdDatabaseTypeManagementVo;

import java.util.Collection;
import java.util.List;

/**
 * 要素库类型管理Service接口
 *
 * @author hxloongs
 * @date 2025-02-27
 */
public interface IIsfdDatabaseTypeManagementService {

    /**
     * 左侧树
     */
    List<IsfdDatabaseTypeManagementVo> tree(String databaseName);

    /**
     * 查询要素库类型管理
     *
     * @param id 主键
     * @return 要素库类型管理
     */
    IsfdDatabaseTypeManagementVo queryById(Long id);


    IsfdDatabaseTypeManagementVo querySingleVoById(Long id);

    /**
     * 分页查询要素库类型管理列表
     */
    TableDataInfo<IsfdDatabaseTypeManagementVo> queryPageList(IsfdDatabaseTypeManagementQueryBo queryBo);

    /**
     * 查询符合条件的要素库类型管理列表
     *
     * @param bo 查询条件
     * @return 要素库类型管理列表
     */
    List<IsfdDatabaseTypeManagementVo> queryList(IsfdDatabaseTypeManagementBo bo);

    /**
     * 新增要素库类型管理
     *
     * @param bo 要素库类型管理
     * @return 是否新增成功
     */
    Boolean insertByBo(IsfdDatabaseTypeManagementBo bo);

    /**
     * 修改要素库类型管理
     *
     * @param bo 要素库类型管理
     * @return 是否修改成功
     */
    Boolean updateByBo(IsfdDatabaseTypeManagementBo bo);

    /**
     * 校验并批量删除要素库类型管理信息
     *
     * @return 是否删除成功
     */
    Boolean deleteWithValidById(Long id);

    List<IsfdDatabaseTypeManagementVo> queryListByIds(Collection<Long> ids);

    /**
     * 输入指定的要素库id，构造一个只有id关联的树
     */
    List<IsfdDatabaseTypeManagementVo> queryTreeByIds(Collection<Long> ids);

    /**
     * 输入指定的要素库id，查询完整的一个树
     */
    List<IsfdDatabaseTypeManagementVo> queryAllTreeByIds(Collection<Long> ids);

    /**
     * 根据topIds查询出所有数据
     */
    List<IsfdDatabaseTypeManagementVo> queryListByTopIds(Collection<Long> topIds);

    /**
     * 根据名称获取当前节点所在树的所有节点数据
     */
    List<IsfdDatabaseTypeManagementVo> queryListByDataBaseName(String databaseName);
}
